package com.member.shop.domain;

import com.baomidou.mybatisplus.annotation.*;
import com.fasterxml.jackson.annotation.JsonFormat;
import com.member.common.annotation.Excel;
import com.member.common.core.domain.BaseEntity;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import lombok.experimental.SuperBuilder;
import org.springframework.format.annotation.DateTimeFormat;

import java.math.BigDecimal;
import java.util.Date;
import java.util.List;

/**
 * 活动对象 sys_biz_activity
 *
 * @author lixinchen
 * @date 2024-01-02
 */
@Data
@SuperBuilder
@AllArgsConstructor
@NoArgsConstructor
@TableName("sys_biz_activity")
public class SysBizActivity extends BaseEntity {

    private static final long serialVersionUID = 1L;

    /**
     * 活动主键id
     */
    @TableId(type = IdType.AUTO)
    private Long id;

    /**
     * 活动标题
     */
    @Excel(name = "活动标题")
    private String title;

    /**
     * 活动状态(0:待开始，1.进行中，2:已结束)
     */
    @Excel(name = "活动状态(0:待开始，1.进行中，2:已结束)")
    private Integer status;


    /**
     * 活动类型（0 促销活动 1 限时活动 2 抽取活动 3 报名活动）
     */
    @Excel(name = "活动类型（0 促销活动 1 限时活动 2 抽取活动 3 报名活动）")
    private Integer type;

    /**
     * 活动分类（0 线上 1 线下）
     */
    @Excel(name = "活动分类（0 线上 1 线下）")
    private Integer category;
    /**
     * 用户范围（0 全部 1 指定）
     */
    @Excel(name = "用户范围（0 全部 1 指定）")
    private Integer userScope;
    /**
     * 门店范围（0 全部 1 指定）
     */
    @Excel(name = "门店范围（0 全部 1 指定）")
    private Integer shopScope;


    /**
     * 奖励类型（0 抽奖 1 积分 2 优惠券）
     */
    @Excel(name = "奖励类型（0 抽奖 1 积分 2 优惠券）")
    private Integer rewardType;
    /**
     * 奖励配置（抽奖id 积分  优惠券id)
     */
    @Excel(name = "奖励配置（抽奖id 积分  优惠券id)")
    private Long rewardCfg;


    /**
     * 价格
     */
    @Excel(name = "价格")
    private BigDecimal price;

    /**
     * 活动开始时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "活动开始时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date activityStartTime;

    /**
     * 活动截止时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    @Excel(name = "活动截止时间", width = 30, dateFormat = "yyyy-MM-dd HH:mm:ss")
    @DateTimeFormat(pattern = "yyyy-MM-dd")
    private Date activityEndTime;

    /**
     * 活动封面
     */
    @Excel(name = "活动封面")
    private String cover;

    /**
     * 详情轮播图
     */
    @Excel(name = "详情轮播图")
    private String infoImages;

    /**
     * 排序
     */
    @Excel(name = "排序")
    private Long sort;

    @TableField(updateStrategy = FieldStrategy.IGNORED)
    private Long fieldId;

    /**
     * 是否发布(0:已发布，1:未发布)
     */
    @Excel(name = "是否发布(0:已发布，1:未发布)")
    private Integer displayed;

    /**
     * 活动详情
     */
    @Excel(name = "活动详情")
    private String details;

    /**
     * 是否删除(0：未删除，1：删除)
     */
    @Excel(name = "是否删除(0：未删除，1：删除)")
    private Integer deleted;

    /**
     * 当前用户是否报名
     */
    @TableField(exist = false)
    private Boolean isEnroll;

    /**
     * 报名字段
     */
    @TableField(exist = false)
    private List<String> fieldList;

}
